package com.ayg.openapi.model.request.risk;

import java.math.BigDecimal;
import java.util.ArrayList;

import com.ayg.openapi.model.request.IBaseParam;
import com.ayg.openapi.model.response.deliver.PayUnifiedOrderResult;
import com.ayg.openapi.model.response.risk.RiskPrepareUnifiedOrderResult;

/**
 * @program: openapi-java-sdk
 * @description: 发放风控预授权类
 * @author: mccken
 * @create: 2019-06-13 11:55
 **/
public class RiskPrepareUnifiedOrderParam implements IBaseParam<RiskPrepareUnifiedOrderResult> {

	/**
	 * 批次号
	 */
	private String batchNo;
	
	/**
	 * 企业系统内部订单号 只能为字符或字母或-
	 */
	private String outOrderNo;
	
	/**
	 * 订单总金额(单位元)（发放的金额）
	 */
	private BigDecimal amount;

	/**
	 * 备注说明
	 * 
	 * 变长20位String
	 * 中文，中文符号算2位。英文、英文符号算1位
	 * 
	 * demo：
	 * 【一，二三a b,.四五。六】21位   失败
	 * 【一，二三ab,.四五。六】20位 成功
	 * 【服务费服务费服务九ab】20  成功
	 * 【服务费服务费服务费十】 20  成功
	 * 【服务费服务费服务费服务费】24 失败
	 */
	private String memo;

	/**
	 * 收款方账号(如果是第三方支付，填写第三方支付账号)
	 */
	private String accountNo;

	/**
	 * 收款方账号名称
	 */
	private String accountName;

	/**
	 * 收款方账号开户行名称 第三方支付，见《第三方支付bank映射表》
	 */
	private String bank;

	/**
	 * 收款方账号开户支行
	 */
	private String depositBank;

	/**
	 * 身份证
	 */
	private String idCard;
	
	private String phone;

	/**
	 * 附加数据，在查询和异步通知接口中原样返回，可作为自定义参数使用(长度64)
	 */
	private String attach;

	/**
	 * 扩展信息字段，可用于向爱员工平台提供发放凭据等额外信息，格式为Json字符串，风控需要必填字段： 1、userId：外部应用系统用户ID
	 */
	private String extInfo;

	/**
	 * 落地服务商id
	 */
	private Long serviceCompanyId;

	/**
	 * 服务类型,见服务类型字典表 
	 */
	private Long serviceType;

	/**
	 * 异步回调地址
	 */
	private String notifyUrl;

	public String getBatchNo() {
		return batchNo;
	}

	public void setBatchNo(String batchNo) {
		this.batchNo = batchNo;
	}

	public String getOutOrderNo() {
		return outOrderNo;
	}

	public void setOutOrderNo(String outOrderNo) {
		this.outOrderNo = outOrderNo;
	}

	public BigDecimal getAmount() {
		return amount;
	}

	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	public String getMemo() {
		return memo;
	}

	public void setMemo(String memo) {
		this.memo = memo;
	}

	public String getAccountNo() {
		return accountNo;
	}

	public void setAccountNo(String accountNo) {
		this.accountNo = accountNo;
	}

	public String getAccountName() {
		return accountName;
	}

	public void setAccountName(String accountName) {
		this.accountName = accountName;
	}

	public String getBank() {
		return bank;
	}

	public void setBank(String bank) {
		this.bank = bank;
	}

	public String getDepositBank() {
		return depositBank;
	}

	public void setDepositBank(String depositBank) {
		this.depositBank = depositBank;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getAttach() {
		return attach;
	}

	public void setAttach(String attach) {
		this.attach = attach;
	}

	public String getExtInfo() {
		return extInfo;
	}

	public void setExtInfo(String extInfo) {
		this.extInfo = extInfo;
	}

	public Long getServiceCompanyId() {
		return serviceCompanyId;
	}

	public void setServiceCompanyId(Long serviceCompanyId) {
		this.serviceCompanyId = serviceCompanyId;
	}

	public Long getServiceType() {
		return serviceType;
	}

	public void setServiceType(Long serviceType) {
		this.serviceType = serviceType;
	}

	public String getNotifyUrl() {
		return notifyUrl;
	}

	public void setNotifyUrl(String notifyUrl) {
		this.notifyUrl = notifyUrl;
	}

	@Override
	public String requestURI() {
		return "/deliver/dlvopenapi/api/app/risk/prepare-unified-order";
	}

	@Override
	public String methodName() {
		return "ayg.risk.prepareUnifiedOrder";
	}

	@Override
	public String version() {
		return "1.0";
	}

	@Override
	public Class<?> respDataClass() {
		return RiskPrepareUnifiedOrderResult.class;
	}
}
